www.gusucode.com > OFDM系统 编码模块的作用是为了提高系统的可靠性,降低接收端的误码率. 数字调制模块可以提高信道的频谱利用率 > OFDM系统 编码模块的作用是为了提高系统的可靠性,降低接收端的误码率. 数字调制模块可以提高信道的频谱利用率/OFDM仿真(matlab)完整可运行/OFDM通信系统/seq_train.m
%************************beginning of file***************************** %seq_train.m %生成用于同步的训练符号 function dout=seq_train() %第一帧产生短训练序列,第二帧产生长训练序列 %每个短训练符号由16个子载波组成,短训练序列 %是由伪随机序列经过数字调制后插0后,再经过 %IFFT之后得到的。具体过程如下:首先采用抽头 %系数为[1 0 0 1 ]的4级移位寄存器产生长度为 %15的伪随机序列之后末尾补0,经过QPSK调制之 %后的伪随机序列只在16的整数倍位置上出现,其 %余的位置补0,产生长度为128的序列,此序列再 %补128个0经过数据搬移后做256点的IFFT变换就 %得到16个以16为循环的训练序列,经过加循环前 %后缀就会产生20个相同的短训练序列。长训练序 %列的产生同短训练序列。 global seq_num if seq_num==1 fbconnection=[1 0 0 1]; QPSKdata_pn=[m_sequence(fbconnection),0]; QPSKdata_pn=qpsk(QPSKdata_pn); elseif seq_num==2 fbconnection=[1 0 0 0 0 0 1]; QPSKdata_pn=[m_sequence(fbconnection),0]; QPSKdata_pn=qpsk(QPSKdata_pn); end countmod=0; for k=1:128 if seq_num==1 if mod(k-1,16)==0 %生成16位循环的短训练符号 countmod=countmod+1; trainsp_temp(k)=QPSKdata_pn(countmod); else trainsp_temp(k)=0; end elseif seq_num==2 if mod(k-1,2)==0 countmod=countmod+1; trainsp_temp(k)=QPSKdata_pn(countmod); else trainsp_temp(k)=0; end end end dout=trainsp_temp; % ************************end of file***********************************